package qc.module.qms.dps;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.client.RestTemplate;

/**
 * QMS中心数据处理系统-Data-Processing-System
 * 功能：原始数据处理、定时计算/统计处理、人工重新计算/统计处理、人工数据维护处理、点号数据保存后触发的关联点号数据计算处理
 * 来源触发消息队列：原始数据、人工计算、人工数据维护
 * 触发外部消息队列：点号数据（最终结果中有点号数据新增、修改、删除、数据标记变化）
 * 定时任务：获取待处理的原始数据、获取待处理的人工重新计算记录、获取待处理的人工数据维护记录
 *
 * @author QuCheng Tech
 * @since 2025/8/12
 */
@SpringBootApplication
@ComponentScan({"qc.common.core"})//需要对qc.common.core封装的进行扫描，aspect中有数据库查询的selectOne添加limit 1
@MapperScan("qc.module.qms.repository")//不扫描repository在service中找不到对应的repository
@ComponentScan({"qc.module.qms.service"})//不扫描service在controller中找不到对应的service
@ComponentScan({"qc.module.qms.dps.controller"})//不扫描controller从gateway找不到对应的微服务
@EnableCaching//启用缓存
@EnableScheduling//启用定时任务
public class QmsDpsApplication {
    public static void main(String[] args) {
        SpringApplication.run(QmsDpsApplication.class, args);
    }

    @Bean
    @LoadBalanced // 开启负载均衡 Ribbon, 发送的请求都会被Ribbon拦截。必须使用应用名代替ip，否则报错
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
